function read_AJAX_quotes() {
	$.ajax({
		url: '/quotes.php',
		type: "POST",
		data: "todo_quote=read&uid="+uid,
		dataType: (jQuery.browser.msie) ? 'text' : 'xml',
		success: function(data){ Printout_quotes(data); },
	}).done(function(){
		edit_icons();
		Quotes_AJAX_buttons();
	});
	
	function Printout_quotes(xmlData) {
		var data;
		var result = '';
		
		if ( typeof xmlData == 'string') {
			data = new ActiveXObject( 'Microsoft.XMLDOM');
			data.async = false;
			data.loadXML( xmlData);
		} else {
			data = xmlData;
		}
		
		$('quote',data).each(function(i, quote){
			result += '\
				<div id="quote_'+$("id", quote).text()+'" class=\"ui-widget ui-widget-content ui-corner-all quote\">\
				<span>&laquo;'+$("content", quote).text().slice(0,-1)+'&raquo;.<br /></span>\
				<em>'+$("author", quote).text()+'</em>. <strong>'+$("title", quote).text()+'</strong>.\
				<div class="edit">\
					<img id="id_edit_'+$("id", quote).text()+'" alt="quote_edit" src="css/images/edit.png" />\
					<img id="id_delete_'+$("id", quote).text()+'" alt="quote_delete" src="css/images/delete.png" />\
				</div>\
				</div>';
		});
		
		$("#quotes").html(result);
	}
	
	function Quotes_AJAX_buttons() {
		$( "#dialog:ui-dialog" ).dialog( "destroy" );
		
		$( "#dialog-confirm-quote" ).dialog({
			autoOpen: false,
			draggable: false,
			resizable: false,
			height: 160,
			modal: true,
			buttons: {
				"Удалить": function() {
					Remove_quote(tag);
					$( this ).dialog( "close" );
				},
				"Отмена": function() {
					$( this ).dialog( "close" );
				}
			},
			hide: "fade"
		});
		
		$( 'img[alt|="quote_delete"]' ).click(function() {
			tag = $(this).attr("id").slice(10);
			$( "#dialog-confirm-quote" ).dialog( "open" );
		});
		
		$( 'img[alt|="quote_edit"]' ).click(function() {
			tag = $(this).attr("id").slice(8);
			$("#title_quote").removeClass( "ui-state-error" )
			.val($(this).parent().siblings("strong").text());
			$("#author_quote").removeClass( "ui-state-error" )
			.val($(this).parent().siblings("em").text());
			$("#content_quote").val($(this).parent().siblings("span").text().slice(1,-2));
			$( "#dialog-add-quote span" ).text("Редактировать");
			$( "#dialog-add-quote input#todo_quote" ).val("edit");
			$( "#dialog-add-quote input#id_tag_quote" ).val(tag);
			$( "#dialog-add-quote" ).dialog( "open" );
		});

	}
	
	function Remove_quote(tag) {
		$.ajax({
			url: '/quotes.php',
			type: "POST",
			data: "todo_quote=del&id="+tag,
			success: function(data) {
				$("div#quote_"+tag)
				.empty()
				.append('<div align="center"><strong>Цитата удалена<strong><br />&nbsp;</div>');
				setTimeout(function() {
					$("div#quote_"+tag)
					.slideUp(1000, function() {
						$(this).remove();
						});
					}, 1000);
			}
		});
	}
	
	$( "#dialog-add-quote" ).dialog({
		autoOpen: false,
		draggable: false,
		resizable: false,
		modal: true,
		buttons: {
			"Хорошо": function() {
				if (Check_input_quote()) {
					Add_quote();
					$( this ).dialog( "close" );
					
					allFields = $( [] )
						.add( $("#title_quote") )
						.add( $("#author_quote") )
						.add( $("#content_quote") ),
					allFields.val('');
				}
			},
			"Отмена": function() {
				$( this ).dialog( "close" );
			}
		},
		hide: "fade"
	});
	
	$( "#add_quote" ).click(function() {
		$("#title_quote").removeClass( "ui-state-error" ).val('');
		$("#author_quote").removeClass( "ui-state-error" ).val('');
		$("#content_quote").removeClass( "ui-state-error" ).val('');
		$( "#dialog-add-quote span" ).text("Добавить новую");
		$( "#dialog-add-quote input#todo_quote" ).val("add");
		$( "#dialog-add-quote" ).dialog( "open" );
	});
	
	function Check_input_quote() {
		var title = $( "#title_quote" ),
		author = $( "#author_quote" ),
		content = $( "#content_quote" ),
		allFields = $( [] ).add( title ).add( author ).add( content ),
		tips = $( "#validateTips_quote" ),
		bValid = true;
		
		allFields.removeClass( "ui-state-error" );
		
		bValid = bValid && checkLength( title, 1, 99 );		
		bValid = bValid && checkLength( author, 3, 50 );
		bValid = bValid && checkLength( content, 0, 250 );
		bValid = bValid && checkRegexp( title, /^([0-9a-zA-Zа-яА-ЯёЁ .,-:\(\)])+$/, "Только буквы и простые символы" );
		bValid = bValid && checkRegexp( author, /^([a-zA-Zа-яА-ЯёЁ .-])+$/, "Допустимы только буквы и точка" );
		bValid = bValid && checkRegexp( content, /^([0-9a-zA-Zа-яА-ЯёЁ .,-:?!;])+$/, "Только буквы и простые символы" );
				
			function updateTips( t ) {
				tips
					.text( t )
					.addClass( "ui-state-highlight" )
					.show();
				setTimeout(function() {
					tips.fadeOut(1000, function() {
						tips
						.html("&nbsp;")
						.removeClass( "ui-state-highlight" )
						.show();
					});
				}, 1500 );
			}

		function checkLength( o, min, max ) {
			if ( o.val().length > max || o.val().length < min ) {
				o.addClass( "ui-state-error" );
				updateTips( "От " + min + " симв. до " + max + "." );
				return false;
			} else {
				return true;
			}
		}

		function checkRegexp( o, regexp, n ) {
			if ( !( regexp.test( o.val() ) ) ) {
				o.addClass( "ui-state-error" );
				updateTips( n );
				return false;
			} else {
				return true;
			}
		}
		
		return bValid;
	}
	
	function Add_quote() {
		$.valHooks.textarea = {
			    get: function( elem ) {
			        return elem.value.replace( /\r?\n/g, "\r\n" );
			    }
			};
		
		textme = $("#content_quote").val();
		$.post(
			'/quotes.php',
			{
				todo_quote: $("#todo_quote").val(),
				uid: uid,
				id: $("#id_tag_quote").val(),
				title: $("#title_quote").val(),
				author: $("#author_quote").val(),
				content_quote: textme
			},
			function(data) {
				$.ajax({
					url: '/quotes.php',
					type: "POST",
					data: "todo_quote=read&uid="+uid,
					dataType: (jQuery.browser.msie) ? 'text' : 'xml', // проверка IE и выбор типа данных
					success: function(result) {
						Printout_quotes(result);
						$("div#quote_"+data).hide().slideDown(1000);
						}
				}).done(function(){
					table_painting(); // Раскраска таблички
					edit_icons(); // Иконки редактирования
					Quotes_AJAX_buttons(); // AJAX действия на иконки
				});
			}
		);
	}
}